Repository navigation
Conversation
There was a problem hiding this comment.
Pull request overview
Updates network detection to ignore VPN policy routes and retain the physical LAN interface.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Changes:
- Selects the lowest-metric default route from the main routing table.
- Adds a regression test using stubbed network commands.
Reviewed changes
Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
bin/omarchy-network-status |
Uses main-table routes for standard and verbose status. |
test/shell.d/network-status-test.sh |
Tests physical-route selection behind policy routing. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| IP_CALLS="$test_tmp/ip-calls" PATH="$stub_bin:$ROOT/bin:$PATH" \ | ||
| "$ROOT/bin/omarchy-network-status" --verbose >"$test_tmp/status" |
Extend the VPN policy-route fix to prefer an active physical NetworkManager device (wifi/ethernet) rather than only reading the main-table default route. This keeps the network panel on the LAN connection even for full-tunnel VPNs or Tailscale exit nodes that replace the default route.
|
Independent confirmation on a Environment
Before ( After (this PR's The tunnel interface has no One extra symptom worth recording: the bar icon and the panel's header text A local workaround for the glyph half, for anyone hitting this before the # /etc/NetworkManager/conf.d/95-wireguard-unmanaged.conf
[keyfile]
unmanaged-devices=type:wireguard
|
|
Thanks for the independent repro on a On the second symptom, you split it correctly and I agree it is two halves. The header text comes from Your |
|
Thanks. Issue #10619 already tracks the false-disconnected Wi-Fi icon, so I added our observations there rather than create a duplicate: #10619 (comment) One correction to my earlier comment: the full-fan/slashed-fan cycling continued after |
|
Reviewed against Four other open pull requests fix the same bug: #12071, #13529, #13666 and #13808. I read all five against
#13529 and #13808 read only the main table's default, so a NetworkManager VPN that installs its own default there (metric 50) is still shown as the uplink. #13666 also adds a Nothing was run on a worker for this branch, since it is not the fix I would bring forward. The second opinion (Codex Medium) did not run: its daily review budget was spent when this was checked, so this comparison is one model's reading and has not been checked by a second. Waiting on the maintainer to choose between the competing fixes. |
|
Follow-up to the review above, at the same head (8af95b5), now with the second opinion that was missing then. #13808 has since closed, so three other open pull requests fix this bug: #12071, #13529 and #13666. Codex Medium was asked which fix to bring forward, without being given my answer, and it also chose #12071. Independence is not guaranteed, since the earlier comment here was public. It found the same bridge/bond defect in this branch: with the uplink on Codex also named limits in #12071 that its author can work on separately: an uplink nmcli does not know is skipped, and the source lookup has no address fallback. The fallback is the one thing this branch does better. Neither changes which fix to bring forward. #13529 and #13666 read only the main table's default route, so a NetworkManager VPN that installs its default there is still shown as the uplink. #13666 also labels a raw-IP QMI modem as a VPN. Nothing was run on a worker for this branch, since it is not the fix that would be brought forward. Waiting on the maintainer to choose between the competing fixes. |
Summary
Why
ip route get 1.1.1.1follows policy routing. With a Tailscale exit node enabled it resolves totailscale0, so the Network panel labels the connection as Ethernet and displays the Tailnet address instead of the active Wi-Fi/Ethernet address. Reading only the main routing table fixes policy-route VPNs but still follows a VPN that replaces the default route; preferring the active NetworkManager physical device covers both cases.Verification
bash -n bin/omarchy-network-status test/shell.d/network-status-test.shtest/shell.d/network-status-test.shpasses with stubbednmcli/ip(connected Wi-Fi + connectedtailscale0)Fixes #7438